home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- class RLEUtilities {
- static final boolean debug = false;
-
- static byte[] readRLE(byte[] var0) {
- byte[] var1 = new byte[var0.length * 4];
- int var2 = 0;
- int var3 = 0;
-
- while(var3 < var0.length) {
- byte var4 = var0[var3++];
- int var5 = var4 & 127;
- if (var2 + var5 > var1.length) {
- byte[] var6 = new byte[Math.max(var2 + var5, var1.length * 2)];
- System.arraycopy(var1, 0, var6, 0, var2);
- var1 = var6;
- }
-
- if ((var4 & 128) != 0) {
- byte var9 = var0[var3++];
-
- while(true) {
- --var5;
- if (var5 < 0) {
- break;
- }
-
- var1[var2++] = var9;
- }
- } else {
- System.arraycopy(var0, var3, var1, var2, var5);
- var3 += var5;
- var2 += var5;
- }
- }
-
- byte[] var8 = new byte[var2];
- System.arraycopy(var1, 0, var8, 0, var2);
- return var8;
- }
-
- static byte[] writeRLE(byte[] var0) {
- byte[] var1 = new byte[var0.length + var0.length / 126 + 1];
- int var2 = 0;
- int var3 = 0;
-
- while(var3 < var0.length) {
- byte var4 = var0[var3];
- boolean var5 = false;
- int var6 = var3 + 1;
-
- for(int var7 = Math.min(var0.length, var3 + 126); var6 < var7; ++var6) {
- if (var0[var6] == var4) {
- ++var6;
- if (var6 >= var7) {
- break;
- }
-
- if (var0[var6] == var4) {
- var6 -= 2;
- break;
- }
- }
-
- var4 = var0[var6];
- }
-
- if (var6 > var3) {
- int var8 = var6 - var3;
- var1[var2++] = (byte)var8;
-
- try {
- System.arraycopy(var0, var3, var1, var2, var8);
- } catch (ArrayIndexOutOfBoundsException var10) {
- System.out.println("src len: " + var0.length + " p: " + var3 + " res len: " + var1.length + " w: " + var2 + " n: " + var8);
- throw var10;
- }
-
- var2 += var8;
- }
-
- if (var6 >= var0.length) {
- break;
- }
-
- var3 = var6++;
- int var15 = Math.min(var0.length, var3 + 126);
-
- byte var16;
- for(var16 = var0[var3]; var6 < var15 && var0[var6] == var16; ++var6) {
- }
-
- if (var6 > var3 + 2) {
- int var9 = var6 - var3;
- var1[var2++] = (byte)(128 | var9);
- var1[var2++] = (byte)var16;
- var3 = var6;
- }
- }
-
- byte[] var13 = new byte[var2];
- System.arraycopy(var1, 0, var13, 0, var2);
- return var13;
- }
- }
-